import React from 'react';
import ReactDOM from 'react-dom';


// import './index.scss';
import PageTitle from 'component/page-title/index.js';
import Pageination from 'util/pageination/index.js';
import TableList from 'util/table-list/index.js';


import MUtil from 'util/mm.js';
import User from 'servers/user-server.js';

const _user = new User();
const _mm = new MUtil();

import { Link } from 'react-router-dom';
class UserList extends React.Component {
    constructor(props){
        super(props);
        this.state={
            list         :[],
            pageNum      :1
        } 
    }
    // 生命周期 渲染完成之后
    componentDidMount(){
        this.loadUserList();
    }
    loadUserList(){
        _user.getUserList(this.state.pageNum).then(res=>{
            // 注意这块 
            // 在这里 我们传入的res res 是请求成功后 
            // Promise 里的resolve方法里传过来的res.data
            // 然后用res.data里的数据完全替换this.state里的数据
 
            // 在加载用户信息的时候 添加了一个回调函数
            this.setState(res);
        },errMsg=>{
            this.setState({
                list:[]
            });
            _mm.errorTips(errMsg);
        });
    }
    // 当页数发生变化的时候
    onPageNumChange(pageNum){
        // 这里需要注意 setState 是异步函数 它并不是同步的
        this.setState({
            pageNum:pageNum

            // 下面添加了一个回调
            // 当setState执行完成后也就是页数传递后
            // 执行了一个 loadUserList（）来进行加载数据
        },()=>{
            // 这里的loadUserList （）里什么都不用传
            this.loadUserList();
        })
    }
    render() {
        let ListBody = this.state.list.map((user, index) => {
            return (
                <tr key={index}>
                    <td>{user.id}</td>
                    <td>{user.username}</td>
                    <td>{user.email}</td>
                    <td>{user.phone}</td>
                    <td>{new Date(user.createTime).toLocaleString()}</td>
                 
                </tr>
            )
        });
        return (

            <div id="page-wrapper">
                <PageTitle title="用户列表" />
               
                <TableList tableHeads={['ID','用户名','邮箱','电话','注册时间']}>
                    {ListBody}
                </TableList>  

                <Pageination 
                current={this.state.pageNum} 
                total={this.state.total}
                    onChange={(pageNum) => { this.onPageNumChange(pageNum)}}
                />
            </div>
        )
    }
}

export default UserList;
